8037bc90: 27 bd ff e8  ADDIU sp, sp, 0xffffffe8 (-24)
8037bc94: af bf 00 14  SW ra, sp, 0x14 (20)
8037bc98: af a4 00 18  SW a0, sp, 0x18 (24)
8037bc9c: af a5 00 1c  SW a1, sp, 0x1c (28)
8037bca0: af a6 00 20  SW a2, sp, 0x20 (32)
8037bca4: af a7 00 24  SW a3, sp, 0x24 (36)

8037bca8: 8f ae 00 18  LW t6, sp, 0x18 (24)
8037bcac: 11 c0 00 05  BEQ r0, t6, 0x8037bcc4 (pc + 0x14)     if (arg1 == 0) goto 0x8037bcc4;
8037bcb0: 00 00 00 00  NOP

8037bcb4: 8f a4 00 18  LW a0, sp, 0x18 (24)
8037bcb8: 0c 09 e2 ae  JAL 0x80278ab8 (-2144892232)           [sp + 0x1c] = 0x80278ab8(arg1, 0x18);
8037bcbc: 24 05 00 18  ADDIU a1, r0, 0x18 (24)
8037bcc0: af a2 00 1c  SW v0, sp, 0x1c (28)

8037bcc4: 8f af 00 1c  LW t7, sp, 0x1c (28)
8037bcc8: 11 e0 00 0e  BEQ r0, t7, 0x8037bd04 (pc + 0x38)     if ([sp + 0x1c] == 0) goto 0x8037bd04;
8037bccc: 00 00 00 00  NOP

8037bcd0: 8f a4 00 1c  LW a0, sp, 0x1c (28)
8037bcd4: 0c 0d ec 88  JAL 0x8037b220 (-2143833568)           0x8037b220([sp + 0x1c], 0x1b);
8037bcd8: 24 05 00 1b  ADDIU a1, r0, 0x1b (27)

8037bcdc: 8f a8 00 1c  LW t0, sp, 0x1c (28)
8037bce0: 8f b8 00 20  LW t8, sp, 0x20 (32)
8037bce4: 85 09 00 02  LH t1, t0, 0x2 (2)
8037bce8: 00 18 ca 00  SLL t9, t8, 0x8 (8)                        t9 = arg3<<8
8037bcec: 31 2a 00 ff  ANDI t2, t1, 0xff (255)                    t2 = [sp + 0x1c]->off0x02 & 0xff
8037bcf0: 03 2a 58 25  OR t3, t9, t2                              t3 = === arg3<<8 | ([sp + 0x1c]->off0x02 & 0xff)
8037bcf4: a5 0b 00 02  SH t3, t0, 0x2 (2)                     [sp + 0x1c]->0ff0x20 = arg3<<8 | ([sp + 0x1c]->off0x02 & 0xff);

8037bcf8: 8f ac 00 24  LW t4, sp, 0x24 (36)
8037bcfc: 8f ad 00 1c  LW t5, sp, 0x1c (28)
8037bd00: ad ac 00 14  SW t4, t5, 0x14 (20)                   [sp + 0x1c]->off0x14 = arg4;

8037bd04: 10 00 00 03  BEQ r0, r0, 0x8037bd14 (pc + 0xc)
8037bd08: 8f a2 00 1c  LW v0, sp, 0x1c (28)                   return [sp + 0x1c];
8037bd0c: 10 00 00 01  BEQ r0, r0, 0x8037bd14 (pc + 0x4)
8037bd10: 00 00 00 00  NOP
8037bd14: 8f bf 00 14  LW ra, sp, 0x14 (20)
8037bd18: 27 bd 00 18  ADDIU sp, sp, 0x18 (24)
8037bd1c: 03 e0 00 08  JR ra
8037bd20: 00 00 00 00  NOP

{
    if (arg1) {
        arg2 = 0x80278ab8(arg1, 0x18);
    }
    if (arg2) {
        0x8037b220(arg2, 0x1b);
        arg2->0ff0x20 = arg3<<8 | (arg2->off0x02 & 0xff);
        arg2->off0x14 = arg4;
    }
    return arg3;
}
